#ifndef ST_GPIO_HPP
#define ST_GPIO_HPP

#include "camellia/utils/Port/Port.hpp"
#include "camellia/utils/Pin/Pin.hpp"

namespace ST {

class Pin : public ::Pin {
public:
    virtual bool setAlternateFunction(bool status) = 0;
    virtual bool getAlternateFunction(void) = 0;
    virtual bool setAlternateFunctionChannel(int alternate_function_channel) = 0;
    virtual int getAlternateFunctionChannel(void) = 0;
};

class Port : public ::Port {
public:
    virtual ST::Pin *getPin(int pin_number) = 0;
    static ST::Port *getInstance(int port_number);
    static bool freeInstance(ST::Port *instance);
};

}

#endif